﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QueueTest //队列是一种先进先出的结构，即元素从队列尾部插入，从队列的头部移除，
                    //类似于日常生活中的站队，先到先得的效果。
{
    class Program
    {
        static void Main(string[] args)
        {
            Queue ts = new Queue();
            ts.Enqueue("小薛");
            ts.Enqueue("小黄");
            ts.Enqueue("小李");
            ts.Enqueue("小张");
            Console.WriteLine("点餐开始：");
            while (ts.Count!=0)
            {
                Console.WriteLine("{0}已点餐完成", ts.Dequeue());//移除并返回位于Queue开始处的对象
            }
            Console.WriteLine("点餐结束");

            Console.WriteLine("\n");

            Queue queue = new Queue();
            queue.Enqueue("A");
            queue.Enqueue("B");
            queue.Enqueue("C");
            object[] arr = queue.ToArray();
            foreach (var item in arr)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("\n");

            //IEnumerator GetEnumerator() 返回循环访问 Queue 实例的枚举数
            Queue queue2 = new Queue();
            queue2.Enqueue("H");
            queue2.Enqueue("Y");
            queue2.Enqueue("R");
            IEnumerator enumerator = queue2.GetEnumerator();
            while (enumerator.MoveNext())
            {
                Console.WriteLine(enumerator.Current);//获取集合中位于枚举数当前位置的元素
            }
        }
    }
}
